<?php


/*
*   假如多个字段赋值取值，对应必须写多个方法一一对应，这里用拦截器__set(),__get()来处理  
*
*   PHP内置了两个方法(拦截器)专门用来赋值和取值，__set():赋值   __get():取值
*
*   不管有多少字段，只要两个方法就可以实现赋值和取值
*/

class Computer{
	//设置多个字段
	private $_name;
	private $_model;
	private $_cpu;

	//当类外的对象直接调用私有字段时，会跟着自动检查是否有拦截器
	//如果直接对$_name进行赋值，那么__set()方法就会拦截住他，系统就不会报错

	//赋值
	//所有字段都在这里进行赋值  传两个参数
	public function __set($_key,$_value){   //自定义变量
		//假如传进来的是_name  那么$_key = '_name';  那么$_value = '联想'   $this->_name = '联想'
		//假如传进来的是_model,那么$_key =  '_model'; 那么$_value = 'i7'    $this->_model = 'i7'
		//假如传进来的是_cpu,那么$_key = '_cpu',那么$_value = '四核'        $this->_cpu = '四核'
		
        return $this->$_key = $_value;   //这句话的意思就是$this->_name = '联想'
	}

	//取值
	//索引字段都在这里取值   传一个参数
	public function __get($_key){
		//如果传入的是_name ，那么就是$this->_name
		//如果传入的是_model ，那么就是$this->_model
		//如果传入的是_cpu ，那么就是$this->_cpu
        return $this->$_key;      //通过字段就取到对应的值
	}
}


$computer = new Computer();
$computer->_name = '联想';
echo $computer->_name;

$computer->_model = 'i7';
echo $computer->_model;

$computer->_cpu = '四核';
echo $computer->_cpu;

















